data oriented programming
Data is immutable.
Data is explicit.
Data is long live than the program.
value semantics
copy-on-write
inout 引數
code:swift
func f(v: inout V) {
v.x += 1
}
var v: V = …
f(&v)
code:javascript
v = produce(v, v => {
v.x += 1;
});
RustRust.iconは一つの參照を同時に所有できないので、參照を占有して扱へる GoGo.iconで struct を値で渡す (func f(v V) {}。func (v V) f() {}) と copy されるけど copy-on-write ぢゃない。pointer を渡す (func f(v *V) {}。func (v *V) f() {}) と copy を抑へられるが copy されない mutating func
inout な self
code:swift
extention V {
mutationg func inc() {
self.x += 1
}
}
var v: V = …
v.inc()
computed property は inout